#!/bin/sh
# exercise \< and \> with multibyte data.
# Derived from https://savannah.gnu.org/bugs/?29537
. "${srcdir=.}/init.sh"; path_prepend_ ../src

require_en_utf8_locale_

e_acute=$(printf '\303\251')
echo "$e_acute" > in || framework_failure_
LC_ALL=en_US.UTF-8
export LC_ALL

fail=0

grep "\\<$e_acute" in > out 2>err || fail=1
compare out in || fail=1
compare /dev/null err || fail=1

grep "$e_acute\\>" in > out 2>err || fail=1
compare out in || fail=1
compare /dev/null err || fail=1

grep -w "$e_acute" in > out 2>err || fail=1
compare out in || fail=1
compare /dev/null err || fail=1

# Also ensure that this works in both the C locale and that multibyte one.
# In the C locale, it failed due to a dfa.c regression in grep-3.2.
echo 123-x > in || framework_failure_

for locale in C en_US.UTF-8; do
  LC_ALL=$locale grep '.\bx' in > out 2>err || fail=1
  compare out in || fail=1
  compare /dev/null err || fail=1
done

# Bug#43255
printf 'a \303\255cone b\n' >in
for flag in '' -i; do
  returns_ 1 env LC_ALL=en_US.UTF-8 grep -w $flag cone in >out 2>err || fail=1
  compare /dev/null out || fail=1
  compare /dev/null err || fail=1
done

Exit $fail
